<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>call, apply, bind</title>
	</head>
	<body>
		
	</body>
</html>
<script>
	
	// this
	var xuwang = {
		name: "徐旺",
		age: 22,
		func: function() {
			console.log(this);
			return function() {
				console.log(this);
			};
		}

	};

	var func = xuwang.func();
	func();

	function test() {
		// 这里的this是window
		console.log(this);
		function f() {
			// 这里的this也是window
			console.log(this);
		}
		f();
	}
	test();


	var obj = {
		name: "小花",
		age: 22
	};

	function info(a, b) {
		console.log(this.name, this.age);
		console.log(a, b);
	}

	// call和apply可以改变this指向
	// call第一个参数: 调用call的函数中的this
	// info.call(obj, 5, 6);

	// 用法和call一样, 只不过后面参数放在了数组中
	// info.apply(obj, [5, 6]);

	// 返回一个函数, 函数中的this就是绑定的对象
	var f = info.bind(obj);
	console.log(f);
	f(5, 6);






</script>